/*
 * # 此文件版权属于ASO.DESIGN
 * # 文件：servicecontext.go  项目：aso-zero
 * # 作用：
 * # 当前修改时间：2021年07月18日 01:05:05
 * # 上次修改时间：2021年07月16日 15:37:27
 * # 作者：thunur
 * # 此文件不可非法传播、倒卖、共享，否则我们将追究相应的法律责任。
 * # 您如果已获得ASO.DESIGN授权可在原有基础上进行修改使用
 * # 如果您还没获得授权请联系我们 thunur@qq.com
 * # Copyright (c) 2021 aso.design
 */

package svc

import (
	"aso/rpc/wechat/wechatclient"
	"aso/utils/common/errorx"
	"aso/utils/sdk/wechat"
	"aso/wechat-api/internal/config"
	"github.com/tal-tech/go-zero/core/stores/cache"
	"github.com/tal-tech/go-zero/core/syncx"
	"github.com/tal-tech/go-zero/zrpc"
)

type ServiceContext struct {
	Config    config.Config
	Cache     cache.Cache
	WechatSdk wechat.Wc
	Wechat    wechatclient.Wechat
}

func NewServiceContext(c config.Config) *ServiceContext {
	//缓存
	redis := cache.New(c.CacheRedis, syncx.NewSharedCalls(), cache.NewStat("admin-api"), errorx.ErrNotFound)
	return &ServiceContext{
		Config: c,
		Cache:  redis,
		// 微信sdk
		WechatSdk: wechat.NewWechatSdk(c.CacheRedis[0].Host, c.CacheRedis[0].Pass, redis),
		Wechat:    wechatclient.NewWechat(zrpc.MustNewClient(c.WechatRpc)),
	}
}
